物联网边缘计算提供驱动内置能力,支持将驱动内置到网关。驱动内置功能,支持您在本地管理驱动文件,再结合云端配置驱动和驱动信息,将驱动部署到边缘端使用。
前提条件
内置的驱动需要符合Link IoT Edge的驱动规范,因此请确保已根据驱动规范,开发完成了您的驱动程序。驱动开发详情请参见驱动开发。背景信息
物联网边缘计算提供驱动内置能力,支持将驱动程序内置到网关,然后在云端配置部署驱动描述信息(驱动名称、驱动编码语言、驱动运行环境、硬件架构等)和驱动通道配置、设备配置等。一、云端操作
- 登录边缘计算控制台,在左侧导航栏单击驱动管理。
- 在驱动管理页面自研驱动页签下,单击的新建驱动。
- 在新建驱动页面,根据提示设置驱动参数。
- 驱动信息
表 1. 驱动信息参数说明 参数 描述 驱动名称自定义驱动的名称。支持大小写英文字母、数字和英文下划线(_),必须以英文字母开头,不超过20个字符。通信协议类型驱动开发所依赖的行业标准通信协议。当前支持的协议类型有Modbus、OPCUA、LoRa WAN和自定义。语言类型驱动的语言类型,支持Node.js 8、Python 3.5、C和Java 8类型。其中,若选择C类型,则还需要选择驱动的CPU架构。
驱动是否内置 选择是否内置驱动文件。 - 是:无需上传驱动文件,使用本地内置驱动。
- 否:需要上传驱动文件,通过云端部署通道直接部署驱动。详情请见云端发布。
内置发布必须选择是。
驱动版本设置驱动的版本,必须是该驱动唯一的版本号,即一个驱动不可以设置两个相同的版本号。驱动适配的边缘版本选择驱动适配的边缘版本,即该驱动只能在该边缘版本及以上版本的网关中运行。驱动版本描述描述您创建的驱动,可以为空。 - 驱动配置
表 1. 驱动配置参数说明 参数 描述 配置格式 配置格式有如下三种: - 键值对配置
- JSON格式
- 配置文件
键值对配置表 配置格式为键值对配置时显示的参数。 单击新增配置,通过设置配置名称、值、注释来配置驱动。
最多添加100个键值对。
配置内容 配置格式为JSON格式时显示的参数。 编写JSON格式配置内容,内容不超过1 KB。编写内容时,系统自动校验格式。若格式错误,可根据系统提示编写正确格式的内容。
上传配置文件 配置格式为配置文件时显示的参数。 需要在本地编写配置文件并上传。配置文件的编写,请参见驱动编码。
- 容器配置
参数 描述 是否使用宿主机host模式 选择是否隔离容器的网络。直接使用宿主机网络环境。 - 是:表示不隔离容器的网络,直接使用宿主机网络环境。
- 否:表示隔离容器的网络,需要设置网络端口映射。
网络端口映射 当是否使用宿主机host模式为否时出现的参数。函数的网络环境和宿主机的环境是完全隔离的。通过网络端口映射,将容器内函数的监听端口映射到宿主机的某一个端口上,实现不同主机上的客户端程序,能够访问该函数提供的服务。最多支持映射10条网络端口。 例如,运行在宿主机容器内的
fc-http-server
函数,通过80端口对外界提供服务。此时,其它主机上的客户端程序,无法通过访问宿主机的80端口,访问到fc-http-server
函数。因此需要将fc-http-server
函数所在的容器端口映射到宿主机的某一个端口上(例如将容器内的80端口映射到宿主机8080端口),允许其它主机上的客户端程序通过访问宿主机的IP地址:8080
,访问到容器内部的fc-http-server
函数。是否启动特权模式 容器内的root用户实际上只是宿主机的一个普通用户。若在容器内部做修改系统时间、使用mount命令等需要root权限的操作,则需要赋予容器privileged特权。
说明 特权模式下,容器内部拥有宿主机的root权限,而且宿主机的所有设备会默认映射到容器内部,即无需配置设备映射。设备映射 当是否启动特权模式为否时出现的参数。设备管理系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的设备(例如串口)时,需要将设备映射到运行函数的容器内部。最多可添加10个设备映射。 卷映射 文件系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的文件时,需要将文件映射到运行函数的容器内部。最多可添加10个卷映射。 内存限制 设置容器的内存上限。 - 当容器内存使用超过限制时,容器会被重启。
- 如果内存限制值过小,可能会导致容器内的应用运行失败。
默认内存为1024 MB,请根据容器内应用大小,上调内存限制。
- 配置校验
表 2. 配置校验参数说明 参数 描述 驱动配置 勾选表示将该驱动配置到边缘实例并关联子设备后,必须设置驱动配置,才可以将驱动部署到边缘实例。 设备配置 勾选表示将该驱动配置到边缘实例并关联子设备后,必须设置设备配置,才可以将驱动部署到边缘实例。
- 驱动信息
- 设置参数完成后,单击确认。您可以在自研驱动列表中看到刚刚创建的驱动。
鼠标悬浮到驱动名称上,可以查看该驱动的ID,请单击复制并保存驱动ID的文本内容,后续步骤中将使用该驱动ID。
二、边缘端操作
Link IoT Edge提供led_driver示例驱动程序,详情请参见led_driver源码。您可以使用示例驱动程序,体验驱动内置功能。
- 创建边缘实例并上线网关,具体操作请参见环境搭建。
- 登录网关执行如下命令,创建内置驱动总目录。
sudo -E mkdir -p /linkedge/pre-installed/
- 执行如下命令,创建内置驱动文件夹,并将“前提条件”中准备的驱动程序及依赖库放置到该目录下。
sudo -E mkdir -p /linkedge/pre-installed/{your_driver_name}/
其中,{your_driver_name}为您驱动程序的名称。例如驱动程序名称为led_driver,则实际执行的命令如下所示。
sudo -E mkdir -p /linkedge/pre-installed/led_driver/
- 检查网关是否已安装如下内置驱动的依赖工具。
工具名称 用途 sed 查找和替换文本文件内容的工具。 jq JSON文件解析工具。 base64 Base64加密工具。 - (可选)若网关上没有sed、jq、base64工具,您需要执行如下步骤,确保内置驱动Shell脚本工具正常运行。
- 进入Link IoT Edge默认配置目录。
cd /linkedge/gateway/build/config/config-manager
- 打开config_default.json文件,找到config条目。
- 在config条目下,新增如下
key:value
键值对。{ "config": { "gw_drivercode_{your_driver_id}": "{your_driver_path}", } }
其中,{your_driver_id}为云端操作中保存的驱动ID;{your_driver_path}为Base64加密后的内置驱动文件夹路径。
例如,驱动ID为f16f13322**********3959cf3,内置驱动文件夹路径/linkedge/pre-installed/led_driver/,该路径Base64加密后为L2xpbmtlZGdlL3ByZS1pbnN0YWxsZWQvbGVkX2RyaXZlcg==,则实际增加的
key:value
键值对如下。{ "config": { "gw_drivercode_f16f13322**********3959cf3": "L2xpbmtlZGdlL3ByZS1pbnN0YWxsZWQvbGVkX2RyaXZlcg==", } }
- 进入Link IoT Edge默认配置目录。
- 在内置驱动文件夹下,下载内置驱动Shell脚本工具并解压。脚本工具解压后的目录结构如下所示。
. └── led_driver |—— pre-installed.sh |—— lib └── main
- 进入内置驱动所在目录,执行内置驱动Shell脚本工具。
cd /linkedge/pre-installed/{your_driver_name}/ sudo -E ./pre-installed.sh {your_driver_id} --default
其中,{your_driver_name}为驱动程序名称,{your_driver_id}为云端操作中保存的驱动ID。
例如,驱动程序名称为led_driver,驱动ID为f16f13322**********3959cf3,则实际执行的命令如下。
cd /linkedge/pre-installed/led_driver/ sudo -E ./pre-installed.sh f16f13322**********3959cf3
- 参考驱动调试内容,将内置驱动分配到边缘实例,并部署边缘实例,完成边缘端驱动内置流程。
常见问题
问:内置驱动Shell脚本执行完成后,没有看到设备上线?
答:必须在云端完成驱动的配置,并部署到网关后,才能上线与之关联的子设备。